草庐IT

C++11 线程 : sleep for a remaining time

全部标签

windows - 如果线程在临界区内死亡,会发生什么?

场景是这样的。我们有很多线程访问受临界区保护的一段代码,这确保一次只有一个线程可以访问该部分。现在的问题是,如果一个线程死在临界区内会发生什么?应用程序会挂起吗?或者有什么方法可以释放锁? 最佳答案 来自MSDN:Ifathreadterminateswhileithasownershipofacriticalsection,thestateofthecriticalsectionisundefined.来源:http://msdn.microsoft.com/en-us/library/windows/desktop/ms6826

c++ - 查找可能是由于线程锁定(可能)引起的性能问题

我花了一些时间运行valgrind/callgrind来分析一个使用许多线程进行大量TCP/IP通信的服务器。在提高性能一段时间后,我意识到在这个特定的测试场景中,进程不受CPU限制,所以我看到的性能“改进”没有用。理论上CPU应该很忙。我知道它连接的TCP/IP设备不是限制,因为服务器在两台机器上运行。一个是PC,另一个是带有Arm处理器的嵌入式设备。即使是嵌入式设备也只有大约2%的CPU使用率,但它执行的事务要少得多——大约十分之一。尽管我们试图尽快获取数据,但两个系统最多只能获取大约2%。我的猜测是某个互斥锁被锁定并占用了一个线程。这是一个纯粹的猜测!系统中有几个线程具有公共(p

database - 如何在 oracle 11g (windows 8) 中启用分区?

我得到的错误是:ORA-00439:featurenotenabled:Partitioningwhiletryingtocreatetablewithpartition.我这里有linux和unix系统的解决方案:$cd$ORACLE_HOME/rdbms/lib$make-fins_rdbms.mkpart_on$make-fins_rdbms.mkioracle任何人都可以提供适用于windows的解决方案吗?注意:select*fromv$optionwhereparameter='Partitioning';PARAMETER-------------------------

python - 如何在 Windows 上更新 numpy 1.11

首先我知道这个主题是重复的,但如果我理解这个问题,我就不会来这里问我的问题。我读了Explainwhynumpyshouldnotbeimportedfromsourcedirectory可能还有2^6个其他站点/问题/解决方案(pip等)有类似问题,但我仍然不明白。我是初学者,在ubuntu上更新python库时没有问题,但在windows上,我失去了神经。所以我将解释我更新库的方式:我继续https://github.com/numpy/numpy/releases我使用v.1.11.0(zip)我下载了numpy-1.11.0.zip文件我删除了C:\Python27\Lib\s

windows - 线程等待原因

我一直在使用在以下帖子中找到的代码:Howtogetthreadstate(e.g.suspended),memory+CPUusage,starttime,priority,etc我正在检查线程状态,下面的枚举描述了线程“等待”状态的原因-enumKWAIT_REASON{Executive,FreePage,PageIn,PoolAllocation,DelayExecution,Suspended,UserRequest,WrExecutive,WrFreePage,WrPageIn,WrPoolAllocation,WrDelayExecution,WrSuspended,Wr

c++ - 从线程中获取 native 句柄?

我正在使用VS2012,我想在运行的线程中设置线程优先级。目标是用最高优先级状态初始化所有线程。为此,我想为线程获取一个HANDLE。我在访问对应于thread对象的指针时遇到一些问题。这可能吗?从调用主线程,指针是有效的,从C++11线程它被设置为CCCCCCCC。可以预见的是,取消引用一些无意义的内存位置会导致崩溃。下面的代码是显示问题的简化版本。#include"stdafx.h"#include#include#include#include#include#includeusingnamespacestd;classthreadContainer{thread*mT;cond

windows - 如何从 Oracle 11g XE 导出 'database' 并将其导入到 Oracle 10.2?

到目前为止,我还没有对Oracle数据库做过任何严肃的事情。我知道它们与我处理过的不同,例如MSSQL。因此,从MSSQL的角度来看,我可以备份数据库,将.bak文件复制到另一台服务器,还原它,创建数据库的完整副本。我不确定如何为Oracle做同样的事情,更不用说不同的版本了。我已经看到它主要是通过命令行完成的,所以我尝试了这个:$expowner/ownerschemas=tkcsdbdirectory=dumpdirdumpfile=dBaseNamelogfile=dBaseLog然后SQLPlus返回:UnknownParameterName'Schemas'.Failedto

c++ - GlobalMemoryStatusEx 线程安全吗?

来自MSDNpage:“GlobalMemoryStatusEx函数返回的信息是易变的。不能保证对该函数的两次连续调用将返回相同的信息。”这是有道理的,但是我无法确定这是否是线程安全的。有人确定知道一种或另一种方式吗?我已尝试使用谷歌搜索,但找不到此信息。 最佳答案 MSDN页面上说的是函数返回的信息是随时间变化的:这就是“volatile”的意思。例如,GetSystemTime返回的信息也是“易变的”。关于过程的其他不同概念是“可重入”和“线程安全”。可重入意味着过程使用的信息依赖于局部变量,而不是全局变量,这可以解释为线程安全

windows - 如何找到线程本地存储的开始和结束?

在Windows和Linux下,如何在给定线程句柄的情况下确定其对应的静态线程本地存储block的开始和结束? 最佳答案 您可以在ThreadInformationBlock中找到此信息.但是请注意,这样做会访问未记录的结构,因此高度不可移植并且可能会在未来版本的Windows中中断。您似乎可以从TIB获取当前线程的线程本地存储区域;我不确定你会得到另一个线程的TLS。您可以尝试深入研究TIB中偏移量0x30处的进程环境block(PEB),但同样,您正在处理可能会发生变化的未记录结构。

php - 在 Windows 上使用 PHP fork /线程的最佳方法是什么?

我有一个php脚本,用于检查许多(数千)站点的更新。有时(随着站点数量的增加更频繁),我在更新其中一个站点时遇到执行超时,整个脚本都付诸东流了。我能想到的最好的想法是fork每个更新,所以如果它死了,整个更新就会继续。从我收集到的信息来看,PHP线程似乎不是什么值得依赖的东西,尤其是在Windows平台上(不幸的是我必须在Windows平台上工作)。我考虑过使用curl作为fork机制,但服务器的成本(时间和处理能力)会不会高得多?我很高兴听到一些关于PHPfork/线程的想法和经验...谢谢,奥马尔。 最佳答案 如果您打算使用cU